#httpRunner  面向http协议的通用测试框架
#   思想：只需要维护yaml/json文件可以实现接口自动化测试、性能测试、线上监控、持续集成
#       不追求重复造轮子，降低框架开发成本和学习成本
#       遵循约定大于配置
#       使用配置文件设置测试用例
#   [框架]如下
#           ----HAR文件(charles/fiddler)-----
#                       |
#                       v
#                   json/yaml/web
#                       |
#                       v
#             （框架内转换为）标准化的JSON数据
#                       |
#                       v
#                       拼接转换
#                       |
#                       V
#                测试用例集成(pytest)
#                       |
#                       V
#           自动化测试        性能测试Locust/locust.client.HttpSession
#               |                       |
#               V                       |
#       Requests/request.Session   <----|
#               |
#               v
#           HTTP(S)
#               |
#               v
#           被测系统
#
#
#
# 三、httpRunner应用
#   环境安装: 1,python
#           2,httprunner     命令 pip install httprunner 检查版本 hrun -V
#           3,必须知道的相关命令
#               httprunner:主命令，用于所有功能
#               hrun:用于运行yaml/json/pytest测试用例   hrun 文件名    运行后系统会自动执行产生.py文件并执行。若对应文件被修改或被更新则产生的.py文件也会被更新
#               hmake:用于将yaml/json测试用例转换成pytest文件
#               har2case:用于将har文件转化成yaml/json/pytests测试用例   需要单独执行命令安装pip3 install har2case
#               locusts:用于性能测试
# 四、httprunner快速上手
#   1.使用抓包工具：fiddler操作抓包，到处har文件
#   2.通过har2case命令把har文件转化为yaml/json/pytest文件格式.    需要进入文件对应的文件夹下执行命令
#       har2case 文件名    默认生成.json文件
#       har2case 文件名 -2y    生成yaml格式文件
# 五、Yaml文件测试用例结构分析
#   每一个测试用例都是一个list of dict（字典列表结构)，其中包括cinfig[配置]和teststeps[测试步骤][{}{}{}{}]
# 六、接口关联
#   在request标签下加一个extract标签提取返回值，通过content或body提取。如下
#       extract:
#           aaa(自定义变量名): content.access_token(被提取对象变量名)
#           然后通过 $自定义变量名     如:$aaa  使用
#               params:
#                   access_token: $aaa
# 七、动态参数：通过热加载debugtalk.py的热加载方式实现
#       与执行的测试文件要在同一目录下，且文件名必须为debugtalk.py
#       1,创建一个debugtalk.py文件，然后其中写函数
#       2，在yaml文件中通过{函数名()}调用
# 八、全局变量环境变量
#       开发环境 测试环境 线上环境 预发布环境
#       在config下加入：
#       base_url: 值
# 九、全局变量和局部变量的应用
#       在config 中在variables下防止全局中共用的变量，当需要使用时，则通过 ${变量名} 引用，如下
#           config:
#           name: testcase description  #测试用例名
#           variables: {name: xiaoming,appid: 1234}   #全局变量 ,若放置在某个用例下则是局部变量
#       #or
#           variables:
#               name: xiaoming
#               appid: 1234
# 十、生成项目全局html格式报告
#   控制台进入到项目目录下然后执行 hrun 指定用例文件夹 --html=待生成html文件名,如下
#       hrun  httpRunner --html=httpRunner/testReport.html
#
# 十一、常用关键字详解
#   config: 配置
#       name: 名称
#       variables: 全局变量
#       verify: 是否https协议验证，值为 false/true
#       base_url: 环境变量
#   teststeps: 步骤
#       name: 步骤名称
#       request: 请求
#           headers: 请求头
#           method: 请求方法
#           params: 参数
#           url: 请求路径
#           cookie: cook信息
#           json: 用于发送http请求正文
#           data: 用于发送http请求正文
#   extract: 提取(通过content或body提取、json提取器)
#   validate: 断言

































